Trabalho prático 1

Compressão de imagens bmp no formato JPEG

Resultados e Conclusões

Original Ultra Hight High Medium Low Animation
Images
Quality --- 100% 75% 50% 25% 100% - 0%
Size (pixeis) 281 x 500 281 x 500 281 x 500 281 x 500 281 x 500
Size (KB) 422KB 22KB 64KB 7KB 6KB ---
Compression Rate --- 94.79% 98,10% 98.34% 98,58% ---
Original Ultra Hight High Medium Low Animation
Images
Quality --- 100% 75% 50% 25% 100% - 0%
Size (pixeis) 384 x 512 384 x 512 384 x 512 384 x 512 384 x 512
Size (KB) 577KB 142KB 24KB 16KB 11KB ---
Compression Rate --- 75.39% 95,85% 97,23% 98,09% ---
Original Ultra Hight High Medium Low Animation
Images
Quality --- 100% 75% 50% 25% 100% - 0%
Size (pixeis) 297 x 400 297 x 400 297 x 400 297 x 400 297 x 400
Size (KB) 349KB 124KB 28KB 19KB 12KB ---
Compression Rate --- 64.47% 91.98% 94.56% 96.56% ---

A imagem logo.bmp, mesmo com uma qualidade alta (75%), já apresenta uma leve distorção no contorno das figuras e, à medida que a qualidade diminui, esta distorção vai ficando cada vez mais evidente. A razão pela qual podemos verificar ruído com uma qualidade de compressão alta, deve-se ao facto de existir um elevado contraste entre as tonalidades das formas e o fundo (só existem três cores com apenas uma tonalidade cada uma).

Na imagem peppers.bmp, apenas começam a ser perceptíveis perturbações a partir da qualidade média (50%). A razão para tal provém da imagem conter transições mais suaves em comparação com a imagem logo.bmp.

Por fim, na imagem barn_mountains.bmp, não existe uma discrepância da qualidade visual tão saliente entre todos os níveis de compressão uma vez que esta tem essencialmente transições suaves. No entanto, é possível distiguir-se algumas zonas pixelizadas quando a qualidade de compressão é baixa.

De um modo geral, as imagens foto-realistas, como é o caso da peppers.bmp e da barn_mountains.bmp, conseguem alcançar maiores taxas de compressão sem grande perda percetual. Estes resultados encontram-se de acordo com o esperado pois sabemos que o JPEG utiliza métodos de compressão pensados para imagens foto-realistas.

Funções auxiliares usadas ao longo do código

Imagem a usar ao longo do relatório

Colormaps

Padding

Modelo YCbCr

No modelo RGB, todos os canais contém luminância. Esta redundância é eliminada no modelo YCbCr, guardando a informação sobre a luminância apenas no canal Y. Os restantes canais, Cb e Cr, guardam a informação acerca da variação de azul e vermelho, respetivamente, relativamente à luma (crominância azul e crominância vermelha). Assim sendo, nos canais Cb e Cr é visível um menor detalhe que as torna mais propícias a maiores níveis de compressão.

Sub-amostragem

A função de downsampling foi aplicada apenas aos canais Cb e Cr da imagem, uma vez que as alterações feitas nestes canais não serão tão percetíveis ao olho humano. O canal Y mantém-se inalterado para não perder o detalhe da imagem (luminância).

Rácio 4:2:0

Como se pode observar, ao usar o rácio 4:2:0, ou seja, reduzindo o número de colunas e linhas para metade (passo de 2) dos canais Cb e Cr, conseguimos comprimir estes canais para 25% do seu tamanho original.

Ao utilizar interpolação quer no downsampling quer no upsampling, é possível verificar que a imagem final se aproxima mais da original. Enquanto que, sem interpolação, a imagem final não fica tão suave, notando-se até alguns "degraus", ou seja, perda de alguma informação, especialmente na imagem logo.bmp dado que apresenta maiores constrastes.

Rácio 4:2:2

Como se pode observar, ao usar o rácio 4:2:2, ou seja, reduzindo o número de colunas para metade (passo de 2) dos canais Cb e Cr, conseguimos comprimir estes canais para 50% do seu tamanho original.

Ao utilizar interpolação quer no downsampling quer no upsampling, é possível verificar que a imagem final se aproxima mais da original, apesar de, na imagem logo.bmp, por não ter muito detalhe (não é foto-realista), apresentar um contorno vermelho mais carregado em volta do círculo. Enquanto que, sem interpolação, a imagem final não fica tão suave, notando-se até alguns "degraus", especialmente na imagem logo.bmp dado que apresenta maiores constrastes. É de realçar, que a imagem, quer com ou sem interpolação, apresenta a mesma taxa de compressão.

Nas imagens foto-realistas, a perda de informação das sub-amostragens não é tão notória quendo comparada com o mesmo tipo de sub-amostragem em imagens gráficas vetoriais.

Comparando os rácios 4:2:0 e 4:2:2, concluí-se que, como era de esperar, o rácio 4:2:0 apresenta piores resultados visualmente que o rácio 4:2:2, quer com interpolação quer sem interpolação. Porém, essas diferenças são minínimas, apenas se distinguíndo mais quando se faz zoom das imagens.

Transformada Discreta do Cosseno (DCT)

DCT aplicada a toda a imagem

Ao utilizar a DCT, há uma compactação da energia num número menor de coeficientes. Por este motivo, poderá ser usado um algoritmo de compressão entrópica (RLE, por exemplo) para eliminar a redundância que existe nas altas frequências. Para aumentar ainda mais a redundância nestas frequências, poderá ser usado um processo de quantização para aproximar os valores (este processo vai levar à perda de informação).

DCT aplicada em blocos

Blocos 8x8

Em blocos 8x8, existe uma menor probabilidade de encontrar transições abruptas. Deste modo, ao aplicar a DCT a estes blocos, os valores AC tendem a proximar-se de zero enquanto que o valor DC se distingue mais desses devido à ausência de frequências altas. Como os valores AC são semelhantes e próximos de zero, consegue-se comprimir mais a imagem através de métodos entrópicos que tiram partido deste aspeto.

Blocos 64x64

Aumentando o tamanho dos blocos para 64x64, verifica-se que há mais probabilidade de apanhar transições abruptas na imagem do que em blocos 8x8. Assim, haverá mais discrepâncias entre os valores AC dos blocos e ,consequentemente, serão mais difícies de comprimir com modelos entrópicos.

Quantização

Pela análise dos gráficos anteriores, verifica-se que, à medida que a qualidade diminui, os valores resultantes da aplicação da quantização aproximam-se cada vez mais de preto (valor 0). É ainda de notar que, com a diminuição da qualidade, a perda de informação aumenta, dado que o resultado da quantização torna a maioria dos valores (AC) iguais a zero, e como tal, impossíveis de recuperar. Como a redundância dos valores aumenta com a diminuição da qualidade, tornam-se todos zero ou próximos disso, a aplicação dos modelos de compressão entrópicos torna-se mais eficaz e, assim, potencial de compressão aumenta também.

Codificação DPCM dos coeficientes DC

Aos aplicar a DPCM por blocos, como estamos perante uma imagem com transições suaves, a diferença entre os coeficientes DC codificados de pixeis adjacentes irá ser perto de zero. Assim sendo, irá haver uma maior proximidade entre os valores, resultando, em termos visuais, numa menor transição entre tonalidades, contrastando com o resultado obtido na alínea anterior, depois de aplicar a quantitização. Estes resultados irão possibilitar uma maior compressão, sobretudo ao aplicar métodos de compressão entrópica como Huffman.

Reconstrução da imagem original

Encoder e decoder

Métricas de distorção das imagens

Resultados do encoder com interpolação e racio 4:2:2

Original 100% 75% 50% 25% 10%
Images
MSE -- 14.49 152.84 261.87 398.95 706.87
RMSE -- 3.81 12.36 16.18 19.97 26.59
SNR -- 35.57 25.34 23.01 21.18 18.69
PSNR -- 36.52 26.29 23.95 22.12 19.63
Original 100% 75% 50% 25% 10%
Images
MSE -- 10.90 51.08 77.76 126.31 278.71
RMSE -- 3.20 7.15 8.82 11.23 16.69
SNR -- 34.55 27.84 26.02 23.91 20.47
PSNR -- 37.76 31.05 29.22 27.12 23.68
Original 100% 75% 50% 25% 10%
Images
MSE -- 6.70 24.28 48.41 70.86 170.45
RMSE -- 2.59 4.93 6.96 8.41 13.06
SNR -- 43.07 37.48 34.48 32.83 29.02
PSNR -- 39.87 34.28 31.28 29.63 25.81

Pela visualização das imagens das diferenças para as várias qualidades, podemos verificar que existe uma maior perda de informação nas qualidades inferiores. Esta perda diminui à medida que aumentamos a qualidade da quantitização. Na imagem descodificada com qualidade 75 não conseguimos visualizar nenhuma perda percetual, e que, na imagem das diferença, a perda é quase nula. Com uma qualide de 50, já dá para visualizar melhor essa perda, dá para ver algum ruído nos contornos das imagens. Principalmente no logo já dá para ver umas falhas interior do círculo vermelho e na faixa azul, perto do contorno.